//
//  BAMainViewController.swift
//  BAweibo
//
//  Created by baggio on 2017/8/1.
//  Copyright © 2017年 baggio. All rights reserved.
//

import UIKit

class BAMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        //把 自定义的 BATabBar 加到 BAMainViewController 中
        //UITabBarController 的源码中有一个属性 tabBar: UITabBar { get }，只读，不能复制，用 KVC（key-value coding:通过 key 来设置属性的 value）
        let tabBar1=BATabBar()
        
        //渲染颜色，有了这句话就可以不需要下面53行 vc.tabBarItem.setTitleTextAttributes，以及设置 vc.tabBarItem.image 时不需要 .withRenderingMode(.alwaysOriginal)
//        tabBar1.tintColor=BA_COLOR_APP_THEME

        //第2步，实例化闭包
        tabBar1.closure={
            //第4步，闭包回调
            print("点击了 +号 按钮")
        }
        
        setValue(tabBar1, forKey: "tabBar")
        
        // UITabBarController 里面添加若干个子 UIViewController
        addChildViewControllers()
    }
    
    private func addChildViewControllers(){
        addChildViewController(vc: BAHomeViewController(), title: "首页", imageName: "tabbar_home")
        addChildViewController(vc: BAMessageViewController(), title: "消息", imageName: "tabbar_message_center")
        addChildViewController(vc: BADiscoverViewController(), title: "发现", imageName: "tabbar_discover")
        addChildViewController(vc: BAProfileViewController(), title: "我", imageName: "tabbar_profile")
    }
    
    private func addChildViewController(vc:UIViewController,title:String,imageName:String){
        //设置title，页面顶端 和 底部 都会显示
        vc.title=title
        
        //设置图片，不选中和选中，采用图片的原生颜色 alwaysOriginal
        //如果用 UIImage(named: imgName)，则只会显示 系统默认的蓝色，而不是图片的颜色
        vc.tabBarItem.image=UIImage(named: imageName)?.withRenderingMode(.alwaysOriginal)
        vc.tabBarItem.selectedImage=UIImage(named: "\(imageName)_selected")?.withRenderingMode(.alwaysOriginal)
        
        //底部的字 还是系统默认的蓝色，所以要设置 tabBarItem 的 title 的颜色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:BA_COLOR_APP_THEME], for: .selected)
        
        //不能直接 addChildViewController(nav)，先要创建一个 UINavigationController
        //let nav=UINavigationController(rootViewController: vc)
        //改成自定义的 UINavigationController
        let nav=BANavigationController(rootViewController: vc)
        
        // UITabBarController 中加进去的子控制器就是一个个的 tab，和 setValue(tabBar1, forKey: "tabBar") 设置的不冲突
        addChildViewController(nav)
    }
    
    

}
